package pl.un4giv3n.mightvsmagic.utils.display;

import org.displaytag.decorator.TableDecorator;

import pl.un4giv3n.mightvsmagic.entity.SpecialSkill;

public class DisplaySpecialSkillDecorator extends TableDecorator {

	public String getBonus(){
		SpecialSkill template = (SpecialSkill) getCurrentRowObject();
		StringBuilder sb = new StringBuilder();
		appendSkillBonus(template, sb);
		appendDmgBonus(template, sb);
		appendElementalBonus(template, sb);
		return sb.toString();
	}

	private void appendElementalBonus(SpecialSkill template,
			StringBuilder sb) {
		if(template.getFireDamage() != 0){
			sb.append("Obrażenia od ognia: ").append(template.getFireDamage()).append("<br/>");
		}
		if(template.getIceDamage() != 0){
			sb.append("Obrażenia od lodu: ").append(template.getIceDamage()).append("<br/>");
		}
		if(template.getEarthDamage() != 0){
			sb.append("Obrażenia od ziemi: ").append(template.getEarthDamage()).append("<br/>");
		}
		if(template.getWindDamage() != 0){
			sb.append("Obrażenia od wiatru: ").append(template.getWindDamage()).append("<br/>");
		}
		if(template.getFireDefence() != 0){
			sb.append("Ochrona od ognia: ").append(template.getFireDefence()).append("<br/>");
		}
		if(template.getIceDefence() != 0){
			sb.append("Ochrona od lodu: ").append(template.getIceDefence()).append("<br/>");
		}
		if(template.getEarthDefence() != 0){
			sb.append("Ochrona od ziemi: ").append(template.getEarthDefence()).append("<br/>");
		}
		if(template.getWindDefence() != 0){
			sb.append("Ochrona od wiatru: ").append(template.getWindDefence()).append("<br/>");
		}
	}

	private void appendDmgBonus(SpecialSkill template, StringBuilder sb) {
		if(template.getDmgFactor() != 0){
			sb.append("Obrażenia zwiększone o: ").append(template.getDmgFactor()).append("%").append("<br/>");
		}
		if(template.getDefFactor() != 0){
			sb.append("Obrona zwiększona o: ").append(template.getDefFactor()).append("%").append("<br/>");
		}
		if(template.getMinDmgIncrease() != 0){
			sb.append("Min obrażenia zwiększone o: ").append(template.getMinDmgIncrease()).append("<br/>");
		}
		if(template.getMaxDmgIncrease() != 0){
			sb.append("Max obrażenia zwiększone o: ").append(template.getMaxDmgIncrease()).append("<br/>");
		}
		if(template.getMinDefIncrease() != 0){
			sb.append("Min obrona zwiększona o: ").append(template.getMinDefIncrease()).append("<br/>");
		}
		if(template.getMaxDefIncrease() != 0){
			sb.append("Max obrona zwiększona o: ").append(template.getMaxDefIncrease()).append("<br/>");
		}
	}

	private void appendSkillBonus(SpecialSkill template,
			StringBuilder sb) {
		if(template.getAttackModifier() != 0){
			sb.append("Sztuka walki: ").append(template.getAttackModifier()).append("<br/>");
		}
		if(template.getParryModifier() != 0){
			sb.append("Unik: ").append(template.getParryModifier()).append("<br/>");
		}
		if(template.getStrenghtModifier() != 0){
			sb.append("Siła: ").append(template.getStrenghtModifier()).append("<br/>");
		}
		if(template.getStaminaModifier() != 0){
			sb.append("Wytrzymałoś: ").append(template.getStaminaModifier()).append("<br/>");
		}
		if(template.getManaModifier() != 0){
			sb.append("Mana: ").append(template.getManaModifier()).append("<br/>");
		}
		if(template.getSpeedModifier() != 0){
			sb.append("Szybkość: ").append(template.getSpeedModifier()).append("<br/>");
		}
		if(template.getSpeedFactor() != 0){
			sb.append("Szybkość zwiększona o: ").append(template.getSpeedFactor()).append("<br/>");
		}
	}
}
